package app;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import util.Util;

import java.util.Date;

/**
 * 引入lombok包，项目必备的开发包，对于普通的java类来说，需要写一大堆的getter，setter，toString，hashcode，equals等一大堆代码
 * 引入这个包，就可以用注释解决这些问题
 * 和数据库相对应的类，最终程序中获取数据库记录就是通过本类描述的
 *对应数据库中的表名，数据表中的一行记录就对应这个类的一个对象
 * 这个类的一个对象就是数据表的一行
 * 数据表的所有内容就对应FileMeta这个类的对象数组
 */
@Data
@NoArgsConstructor
@ToString
@EqualsAndHashCode
public class FileMeta {
    private String name;
    private String path;
    private Boolean isDirectory;
    private Long size;
    private Date lastModified;

    //以下三个属性需要在界面显示，将当前属性值做处理之后展示
    //属性名和app.fxml中的属性名保持一致
    //文件类型
    private String isDirectoryText;
    //文件大小
    private String sizeText;
    //上次修改时间
    private String lastModifiedText;

    public void setSize(Long size) {
        this.size = size;
        this.sizeText= Util.parseSize(size);
    }

    public void setIsDirectory(Boolean directory) {
        isDirectory = directory;
        this.isDirectoryText=Util.parseFileType(directory);
    }

    public void setLastModified(Date lastModified) {
        this.lastModified = lastModified;
        this.lastModifiedText=Util.parseDate(lastModified);
    }

    public FileMeta(String name, String path, Boolean isDirectory, Long size, Date lastModified) {
        this.name = name;
        this.path = path;
        this.isDirectory = isDirectory;
        this.size = size;
        this.lastModified = lastModified;
    }

    //若包含有中文名称，就是英文全小写
    private String pinYin;
    //英文首字母
    private String pinYinFirst;
}